Visayas State University: Campus Safety and Resilience Survey

Author

ViSERDAC

Published

January 15, 2026

1 Sociodemographic

Code
data_raw |> 
  select(position, age:resident, participation, traffic_light) |> 
  select(-work_year) |> 
  mutate(
    resident = if_else(resident == 1, "In-campus", "Off-campus"),
    participation = case_when(
      participation %in% c(0, "0", "No") ~ "No",
      participation %in% c(1, "1", "Yes") ~ "Yes",
      TRUE ~ as.character(participation)),
    traffic_light = case_when(
      traffic_light == 0 ~ "No",
      traffic_light == 1 ~ "Yes",
      traffic_light == 2 ~ "Maybe",
      TRUE ~ as.character(traffic_light))
      ) |> 
  tbl_summary(
    by = position,
    type = list(sex ~ "categorical",
                participation = "categorical"),
    missing_text = "Missing observation(s)"
  ) |> 
  bold_labels() %>% 
  as_kable_extra(linesep = "") %>% 
  kable_minimal() %>% 
  kable_styling(full_width = F, fixed_thead = T,
                bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Characteristic faculty
N = 20
staff
N = 20
age 32 (24, 37) 31 (29, 38)
Missing observation(s) 2 0
sex
0 8 (44%) 8 (42%)
1 10 (56%) 11 (58%)
Missing observation(s) 2 1
resident
In-campus 7 (39%) 3 (16%)
Off-campus 11 (61%) 16 (84%)
Missing observation(s) 2 1
participation
No 15 (75%) 9 (60%)
Yes 5 (25%) 6 (40%)
Missing observation(s) 0 5
traffic_light
Maybe 1 (5.6%) 5 (28%)
No 12 (67%) 1 (5.6%)
Yes 5 (28%) 12 (67%)
Missing observation(s) 2 2
1 Median (Q1, Q3); n (%)

2 Physical safety and security

Code
## plotting statement
pss_plt <- 
  item_statement_dta |> 
  filter(str_detect(categories, "Physical")) |>
  ggplot(aes(x = perc, y = description, fill = response_fct)) +
  geom_col(position = "fill", width = 0.7) +
  geom_text(aes(label = scales::percent(perc, accuracy = 1)),
            position = position_fill(vjust = 0.5),
            color = "gray90",
            size = 4, 
            fontface = "bold") +
  scale_x_continuous(labels = scales::percent_format()) +
  scale_fill_manual(values = c("#073b4c", "#118ab2", "#06d6a0", "#ffd166", "#e63946")) +  
  coord_cartesian(clip = "off", expand = TRUE) +
  facet_wrap(~position) +
  labs(title = "Physical safety and security",
       x = element_blank(),
       y = element_blank(),
       fill = "Response") +
  custom_theme
  
## saving plot
ggsave(
  plot = pss_plt,
  filename = "plot/physical_saftey.jpeg",
  dpi = 400,
  height = 6,
  width = 10,
  unit = "in"
)

## show plot
knitr::include_graphics("plot/physical_saftey.jpeg")

3 Emotional and professional safety

Code
## plotting statement
eps_plt <- 
  item_statement_dta |> 
  filter(str_detect(categories, "Emotional")) |>
  ggplot(aes(x = perc, y = description, fill = response_fct)) +
  geom_col(position = "fill", width = 0.7) +
  geom_text(aes(label = scales::percent(perc, accuracy = 1)),
            position = position_fill(vjust = 0.5),
            color = "gray90",
            size = 4, 
            fontface = "bold") +
  scale_x_continuous(labels = scales::percent_format()) +
  scale_fill_manual(values = c("#073b4c", "#118ab2", "#06d6a0", "#ffd166", "#e63946")) +
  coord_cartesian(clip = "off", expand = TRUE) +
  facet_wrap(~position) +
  labs(title = "Emotional and professional safety",
       x = element_blank(),
       y = element_blank(),
       fill = "Response") +
  custom_theme


## saving plot
ggsave(
  plot = eps_plt,
  filename = "plot/emotional_saftey.jpeg",
  dpi = 400,
  height = 6,
  width = 10,
  unit = "in"
)

## show plot
knitr::include_graphics("plot/emotional_saftey.jpeg")

4 Social and community safety

Code
## plotting statement
scf_plt <- 
  item_statement_dta |> 
  filter(str_detect(categories, "Social")) |>
  ggplot(aes(x = perc, y = description, fill = response_fct)) +
  geom_col(position = "fill", width = 0.7) +
  geom_text(aes(label = scales::percent(perc, accuracy = 1)),
            position = position_fill(vjust = 0.5),
            color = "gray90",
            size = 4, 
            fontface = "bold") +
  scale_x_continuous(labels = scales::percent_format()) +
  scale_fill_manual(values = c("#073b4c", "#118ab2", "#06d6a0", "#ffd166", "#e63946")) +
  coord_cartesian(clip = "off", expand = TRUE) +
  facet_wrap(~position) +
  labs(title = "Social and community safety",
       x = element_blank(),
       y = element_blank(),
       fill = "Response") +
  custom_theme


## saving plot
ggsave(
  plot = scf_plt,
  filename = "plot/social_saftey.jpeg",
  dpi = 400,
  height = 6,
  width = 10,
  unit = "in"
)

## show plot
knitr::include_graphics("plot/social_saftey.jpeg")